package com.zmzncs.lmtc.common.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 类ServiceDataCache.java的实现描述：服务缓存
 *
 * @author  2020年05月14日 09:00:47
 */
@Slf4j
public class ServiceDataCache {

    /**
     * 服务记录
     */
    private static final Map<String,String> serviceHearheatMap = new ConcurrentHashMap<>();

    /**
     * 保存记录
     * @param key
     */
    public static void addRecord(String key,String value){
        if(StringUtils.isBlank(key) || StringUtils.isBlank(value)){
            return;
        }
        serviceHearheatMap.put(key,value);
    }


    /**
     * 判断是否包含KEY  并add
     * @param key
     * @return
     */
    public static synchronized boolean isHaveKeyAdd(String key){
        if(StringUtils.isNotBlank(key) && StringUtils.isNotBlank(ServiceDataCache.findRecord(key)) ){
            log.info(key+"------true");
            return true;
        }else{
            ServiceDataCache.addRecordDate(key);
            log.info(key+"------false"+ServiceDataCache.findRecord(key));
            return false;
        }
    }

    /**
     * 保存记录
     * @param key
     */
    public static void addRecordDate(String key){
        if(StringUtils.isBlank(key)){
            return;
        }
        String dateStr = DateTimeUtil.getTime();
        serviceHearheatMap.put(key,dateStr);
    }


    /**
     * 删除记录
     * @param key
     */
    public static void removeKey(String key){
        if(StringUtils.isBlank(key)){
            return;
        }
        serviceHearheatMap.remove(key);
    }

    /**
     * 查询记录
     * @param key
     * @return
     */
    public static String findRecord(String key){
        if(StringUtils.isBlank(key)){
            return "";
        }
        return serviceHearheatMap.get(key);
    }

    /**
     * 服务列表
     * @return
     */
    public static Map<String,String> listServiceRecord(){
        Map<String,String> serviceRecords = new HashMap<>();
        if(serviceHearheatMap.size()>0){
            for(String key : serviceHearheatMap.keySet()){
                serviceRecords.put(key,serviceHearheatMap.get(key));
            }
        }
        return serviceRecords;
    }
}

    